home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 4 / BBS in a Box - Macintosh - Volume IV (January 1992) (BBS in a Box).iso / Files / Prog / M / MOLLASSES.TX < prev    next >
Encoding:
Text File  |  1987-04-26  |  6.8 KB  |  290 lines  |  [TEXT/MACA]

  1.     terse
  2.     noloc
  3. ;**************************************************
  4. ;    The Molasses DA
  5. ;    Chris Gehlker
  6. ;    Grand Canyon Code Factory
  7. ;    3158 W. Woodridge Dr.
  8. ;    Phoenix, AZ 85023
  9. ;    (602)    688-9024
  10. ;**************************************************
  11.     Title    "Mollasses DA    $"
  12.     prtr    "/E/$45"
  13. ;**************************************************
  14. Version    define    "1.1"    Now works with 64K ROM
  15. ;**************************************************
  16.     ftype    'DFIL'
  17.     fsign    'DMOV'
  18. ;**************************************************
  19. ;Includes
  20.     IPATH    "HD:Languages:McAssembly:System files:.PSM Files:"
  21.     IF1
  22.     Incl    "SysEqu.psm"        system equates
  23.     incl    "QuickEqu.PSM"        quick draw equates
  24.     incl    "ToolEqu.PSM"        toolbox equates
  25.     incl    "RegisterTraps.PSM"    register-based trap words
  26.     incl    "PushPop.asm"        push and pop macros
  27.     incl    "IOBase.asm"        base all I/O param block syms to a0
  28.     endif
  29.     
  30.     tcomp
  31.  
  32. ;**************************************************
  33. ;        Register Usage
  34. ; A0/A1 -- General purpose, toolbox calls may clobber
  35. ; A2 -- General purpose
  36. ; A3/A4 -- Hold values in A0/A1
  37. ; A6 -- Temp storage for pointers
  38. ; D0/D2 -- General purpose, toolbox calls may clobber
  39. ;**************************************************
  40. ;index some stuff of addresses
  41.  
  42.     base    A4,dCtlWindow,dCtlRefNum
  43.     base    A3,csCode,csParam
  44.     base    A0,WindowKind
  45.  
  46. ;**************************************************
  47. ;Equates
  48.     dsec    1
  49. Okay    byte        1
  50. Juice    byte        2
  51. Honey    byte        3
  52. Molasses    byte    ;4
  53. Tar    byte        5
  54.     dend
  55. true    equ    -1
  56. False    equ    0
  57. On    equ    1
  58. Off    equ    0
  59. AVector    equ    40
  60. Old128Vector    equ    $401F52
  61. Old64Vector    equ    $401018
  62. _Debug    trapw    $A9FF
  63.  
  64.     mexp    False
  65. ;**************************************************
  66. [[ DRVR,20,32,"/0Molasses"
  67. START    DB    %1010100    High byte of drvrFlags
  68.     DB    0        Low byte of drvrFlags
  69.     DW    0        drvrDelay
  70.     DW    %101101010    drvrEMask
  71.     DW    0        drvrMenu
  72.     DW    OPEN_DA-START
  73.     DW    0        No prime routine
  74.     DW    CONTROL_DA-START
  75.     DW    0        No status routine
  76.     DW    CLOSE_DA-START
  77.     TEXT    #"Molasses"    DA's name
  78.     ALIGN
  79.  
  80. ;**************************************************
  81. ;    OPEN_DA routine
  82. ;**************************************************
  83. OPEN_DA
  84.     MOVEM.L    A0-A6/D0-D7,-(SP)    Save registers
  85.     MOVE.L  A1,A4
  86.     GetPort    !PortHolder
  87. ;--------------------------------------------------
  88. ;    Find own resource ID
  89. ;--------------------------------------------------
  90.     TST.L    dCtlWindow    Are we already open
  91.     BNE    OPENED
  92. ;--------------------------------------------------
  93. ;    Find ROM version
  94. ;--------------------------------------------------
  95.     LEA    NewROM,A0
  96.     MOVE    #False,(A0)
  97.     MOVE    ROM85,D0
  98.     BTST    #15,D0
  99.     BNE.S    .old
  100.     LEA    NewROM,A0
  101.     MOVE    #True,(A0)
  102. .old    LEA    START,A0
  103.     _RecoverHandle        Find our handle
  104.     GetResInfo    A0,!ResID,!ResType,!ResType
  105. ;--------------------------------------------------
  106. ;    Post Dialog
  107. ;--------------------------------------------------
  108.     MOVE    ResID,D0    Calculate resource ID
  109.     ASL     #5,D0
  110.     OR      #$C000,D0
  111.     LEA    DlgPtr,A6    Save the pointer
  112.     GetNewDialog    D0,#0,#-1,(A6)
  113.     GetDItem    DlgPtr,#Molasses,!itemType,!itemHandle,!dispRect
  114.     SetCtlValue    itemHandle,#On    Set molasses as default
  115.     LEA    LUBE,A1
  116.     MOVE    #Molasses,(A1)        Default is molasses
  117.     MOVE.L    DlgPtr,A0
  118.     MOVE    dCtlRefNum,WindowKind    Change to DriverKind
  119.     MOVE.L  DlgPtr,dCtlWindow    Put window ptr in DCE
  120. LEAVE    SetPort    PortHolder        Restore the port
  121.     MOVEM.L    (SP)+,D0-D7/A0-A6    Restore registers
  122.     MOVE    #0,D0            All is well
  123.     RTS
  124. OPENED    SelectWindow    DlgPtr        Bring our window to front
  125.     BRA.S   LEAVE
  126.  
  127. ;**************************************************
  128. ;        CONTROL_DA routine
  129. ;        On Entry:
  130. ; A0 -- Pointer to parameter block
  131. ; A1 -- Pointer to DCE
  132. ;**************************************************
  133. CONTROL_DA
  134.     MOVEM.L A0-A6/D0-D7,-(SP)    Save registers
  135.     MOVE.L  A0,A3
  136.     MOVE.L  A1,A4
  137.     GetPort    !PortHolder
  138.     MOVE    csCode(A3),D0
  139.     CMP     #Goodbye,D0
  140.     BEQ.S    CLOSE_IT
  141.     CMP    #accEvent,D0
  142.     BEQ.S    EVENT
  143. CTL_DONE
  144.     MOVE.L  DlgPtr,A0
  145.     MOVE    dCtlRefNum,WindowKind
  146. ByeBye    SetPort    PortHolder
  147.     MOVEM.L    (SP)+,D0-D7/A0-A6
  148.     MOVE    #0,D0        Good return
  149.     MOVE.L    JIODone,-(SP)    Special return address
  150.     RTS
  151. CLOSE_IT
  152.     LEA    NewROM,A0
  153.     TST    (A0)
  154.     BNE.S    .new
  155.     MOVE.L    #Old64Vector,AVector
  156.     BRA.S    .old
  157. .new    MOVE.L    #Old128Vector,AVector
  158. .old    MOVE.L    #0,dCtlWindow
  159.     BRA    ByeBye
  160. EVENT
  161.     MOVE.L  csParam,A2
  162.     MOVE    (A2),D0
  163.     CMP    #keyDwnEvt,D0
  164.     BEQ.S    BEEP
  165.     CMP     #autoKeyEvt,D0
  166.     BEQ.S    BEEP
  167.     CMP     #activateEvt,D0
  168.     BEQ.S   DIALOG_EVENT
  169.     CMP     #mButDwnEvt,D0
  170.     BEQ.S    DIALOG_EVENT
  171.     CMP     #updatEvt,D0
  172.     BEQ.S   DIALOG_EVENT
  173.     BRA.S   CTL_DONE
  174. BEEP    MOVE    #3,-(SP)
  175.     _SysBeep
  176.     BRA     CTL_DONE
  177. DIALOG_EVENT
  178.     MOVE.L  DlgPtr,A0
  179.     MOVE    #DialogKind,WindowKind
  180.     IsDialogEvent    csParam,=D0
  181.     BTST    #0,D0
  182.     BEQ.S    CTL_DONE
  183.     DialogSelect    csParam,!DlgPtr,!Item,=D0
  184.     BTST    #0,D0
  185.     BEQ    CTL_DONE
  186.     MOVE    Item,D1
  187.     CMP    #Okay,D1
  188.     BEQ.S    SET_DELAY
  189.     LEA    LUBE,A1
  190.     MOVE    D1,(A1)        Save chosen button
  191.     BSR    CLEAR_BUTTONS
  192.     BSR    SET_BUTTON
  193.     BRA    CTL_DONE
  194. CLEAR_BUTTONS
  195.     MOVEQ    #3,D3        Four buttons
  196. CLEAR_LOOP
  197.     MOVE    D3,D4        Calculate item #
  198.     ADDQ    #2,D4
  199.     GetDItem    DlgPtr,D4,!itemType,!itemHandle,!dispRect
  200.     SetCtlValue    itemHandle,#Off
  201.     DBRA    D3,CLEAR_LOOP
  202.     RTS            Back to RADIO
  203. SET_BUTTON
  204.     GetDItem    DlgPtr,Item,!itemType,!itemHandle,!dispRect
  205.     SetCtlValue    itemHandle,#On
  206.     RTS
  207. SET_DELAY
  208.     HideWindow    DlgPtr
  209.     LEA    TIMER,A0    Get TIMER's address
  210.     MOVE.L    A0,AVector    Reset A-line emulator
  211.     MOVE    LUBE,D1        Chosen radio button
  212.     CMP    #Juice,D1    Juice chosen?
  213.     BNE.S    .old
  214.     LEA    NewROM,A0
  215.     TST    (A0)
  216.     BNE.S    .new
  217.     MOVE.L  #Old64Vector,AVector
  218.     BRA.S    .old
  219. .new    MOVE.L    #Old128Vector,AVector
  220. .old    LEA     DlgPtr,A0
  221.     MOVE    dCtlRefNum,WindowKind
  222.     BRA.S    CTL_DONE
  223. TIMER
  224.     MOVEM.L    D0/D1/A0,-(SP)    Save D0 & D1
  225.     MOVE    LUBE,D1        Get LUBE
  226.     MOVE    #120,D0
  227.     ASL.L    D1,D0        Multiply by LUBE
  228. TIME_LOOP
  229.     NOP            Waste some time
  230.     NOP
  231.     DBRA    D0,TIME_LOOP
  232.     LEA    NewROM,A0
  233.     TST    (A0)
  234.     BNE.S    .new
  235.     MOVEM.L    (SP)+,D0/D1/A0    Restore A0, D0 & D1
  236.     JMP    Old64Vector    Dispatch trap
  237. .new    MOVEM.L    (SP)+,D0/D1/A0    Restore A0, D0 & D1
  238.     JMP    Old128Vector    Dispatch trap
  239. ;**************************************************
  240. ;        CLOSE_DA routine
  241. ;**************************************************
  242. CLOSE_DA
  243.     MOVEM.L    A0-A6/D0-D7,-(SP)    Save registers
  244.     MOVE.L    A1,A4
  245.     GetPort    !PortHolder
  246.     LEA    NewROM,A0
  247.     TST.W    (A0)
  248.     BNE.S    .new
  249.     MOVE.L    #Old64Vector,AVector
  250.     BRA.S    .old
  251. .new    MOVE.L    #Old128Vector,AVector
  252. .old    DisposDialog    DlgPtr
  253.     MOVE.L    #0,dCtlWindow
  254.     SetPort    PortHolder
  255.     MOVEM.L    (SP)+,A0-A6/D0-D7
  256.     MOVE    #0,D0        Function return
  257.          RTS
  258. ;**************************************************
  259. ;    Storage
  260. ;**************************************************
  261. PortHolder    pointer    1
  262. ResID        word    1
  263. ResType        long    1
  264. ResName        byte    256
  265. Item        word    1
  266. itemType    word    1
  267. itemHandle    hdl    1
  268. dispRect    rect    1
  269. DlgPtr        pointer    1
  270. LUBE        word    1
  271. DEFAULT        word    1
  272. NewROM        word    1
  273. ]]
  274.     list    False
  275. $$ DLOG,-15744,$20,Lube
  276. 94,74,200,416
  277. 16
  278. False,True
  279. 0
  280. -15744
  281. Lube
  282. $$ DITL,-15744,$20
  283. 6
  284. 0,$48,$88,$5C,$C4,4,OK
  285. 0,$18,0,$28,$148,6,Apple Juice (Manufacturer's Recomendation)
  286. 0,$28,0,$38,$50,6,Honey
  287. 0,$38,0,$48,$60,6,Molasses
  288. 0,$48,0,$58,$50,6,Tar
  289. 0,0,$58,$10,$F0,136,Lubricate ROMs with:
  290.     END